package com.tqw.item.feign;

import com.tqw.entity.Result;
import com.tqw.pojo.Item;
import com.tqw.pojo.ItemCat;
import com.tqw.vo.ItemVO;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * @author Alex
 */
@FeignClient(name = "tqw-item",contextId = "itemServer")
public interface ItemFeignClient {


    /**
     * 新增商品
     * @param itemVO
     */
    @PostMapping("/item/savaItem")
    Result<?> savaItem(@RequestBody ItemVO itemVO,@RequestHeader("Authorization")String token);

    /**
     * 删除商品
     * @param id
     */
    @DeleteMapping("/item/deleteItemById/{id}")
    Result<?> deleteItemById(@PathVariable("id") Integer id);

    /**
     * 根据id查询
     * @param id
     * @return
     */
    @GetMapping("/item/{id}")
    Result<Item> findItemById(@PathVariable("id") Integer id);

    /**
     * 根据id修改商品信息
     * @param item
     */
    @PutMapping("/item/updateItemById")
    Result<?> updateItemById(Item item);

    /**
     * 修改商品状态
     */
    @PutMapping("/item/updateItemStatus")
    Result<?> updateItemStatus(@RequestBody Item item);

    /**
     * 查询所有商品信息
     */
    @GetMapping("/item/findItemList")
    Result<List<Item>> findItemList();

    /**
     * 根据等级查询商品分类
     * @param level
     * @return
     */
    @GetMapping("/item/itemCat/findItemCatList/{level}")
    Result<List<ItemCat>> findItemCatList(@PathVariable("level") Integer level);

    /**
     * 根据收藏夹是否有数据进行增加删除
     * @param token
     * @param item
     * @return
     */
    @PostMapping("/item/favorites")
    Result favorites(@RequestHeader("Authorization") String token,
                     @RequestBody Item item);

    /**
     * 修改商品详情缓存
     * 请求类型get
     * 请求路径 URL：http://localhost:8080/#/item/itemDesc/update?itemId=?&status=?
     * 返回参数 无
     * @return
     */
    @GetMapping("/item/itemDesc/updateRedis")
    void updateItemDesc(@RequestParam("itemId") Integer itemId,@RequestParam("status") Character status);
}
